En una reactive form Angular , tenemos una casilla de verificación que debe marcarse antes de que funcione nuestro botón save . Ahora, tenemos un nuevo requisito para mostrar solo esta casilla de verificación en ciertas regiones, lo que se logra fácilmente a través de una propiedad de environment y un *ngIf en la casilla de verificación.
Sin embargo, ¿cómo puedo condicionalmente hacer que el atributo [disabled] del botón save no se preocupe por la casilla de verificación?
mi-componente.componente.html
<div *ngIf="isMyCheckboxRegion"> <input [formControl]="myCheckbox" type="checkbox" id="my-checkbox"> <label for="my-checkbox">Please check this box</label> </div> <div> <button validationgroup="SaveMyForm" (click)="onSubmit()" [disabled]="anotherFormGroup.invalid || myCheckbox.invalid">Save</button> </div>mi-componente.componente.ts
import { environment } from 'src/environments/environment'; export class myComponent implements OnInit { public isMyCheckboxRegion = environment.isMyCheckboxRegion; public myCheckbox = FormControl('', Validators.requiredTrue); }Intente configurar Validators.requiredTrue condicionalmente:
public myCheckbox = FormControl('', this.isMyCheckboxRegion ? Validators.requiredTrue : undefined); Como el validador se aplica de forma condicional, myCheckbox.invalid debe ser false independientemente del valor de la casilla de verificación.
Alternativa:
También puede usar isMyCheckboxRegion en el HTML:
<button validationgroup="SaveMyForm" (click)="onSubmit()" [disabled]="anotherFormGroup.invalid || (isMyCheckboxRegion && myCheckbox.invalid)" >Save</button>